#include"hash.h"

//void testHT1()
//{
//	open_address::HashTable<int, int> ht;
//	int a[] = { 11,21,4,14,24,15,9 };
//	for (auto e : a)
//	{
//		ht.Insert({ e,e });
//	}
//
//	ht.Insert({ 19,19 });
//	ht.Insert({ 19,191 });
//	ht.Insert({ 19,190 });
//
//	cout << ht.Find(24) << endl;
//	ht.Erase(4);
//	cout << ht.Find(24) << endl;
//	cout << ht.Find(4) << endl;
//}
//
//struct StringHashFunc//支持把string转成整型
//{//支持字符串取模
//	size_t operator()(const string& s)
//	{
//		size_t hash = 0;
//		for (auto e : s)
//		{
//			hash *= 31;
//			hash += e;//ASCII码相加
//		}
//		return hash;
//	}
//};
//
//void TestHT2()
//{
//	//两层映射
//	//string -> size_t -> n
//	open_address::HashTable<string, string, StringHashFunc> ht;
//	ht.Insert({ "sort","排序" });//字符不能取模
//	ht.Insert({ "left","左边" });
//
//	cout << StringHashFunc()("bacd") << endl;
//	cout << StringHashFunc()("abcd") << endl;
//	cout << StringHashFunc()("aadd") << endl;
//}
//
//int main()
//{
//	testHT1();
//	TestHT2();
//	return 0;
//}

void TestHT1()
{
	hash_bucket::HashTable<int, int> ht;
	int a[] = { 11,21,4,14,24,15,9,19,29,39,49 };
	for (auto e : a)
	{
		ht.Insert({ e,e });
	}

	ht.Insert({ -6,6 });

	for (auto e : a)
	{
		ht.Erase(e);
	}
}

void TestHT2()
{
	hash_bucket::HashTable<string, string> ht;
	ht.Insert({ "sort", "排序" });
	ht.Insert({ "left", "左边" });
}

int main()
{
	TestHT1();
	//TestHT2();

	return 0;
}